<template>
  <div>

  </div>
</template>
<script setup lang="ts">
//数组
// let arr1: number[] = [1, 2, 3]
// let arr2:Array<number> = [1,2,3]
// //联合类型
// let arr3:Array<number|string> = [1,2,'3']
// let arr4: (number|string)[]= [1, '2', 3]
// console.log(arr1,arr2,arr3,arr4)

//元组   一一对应关系
// let arr5: [number, string, number] = [1, '2', 3]
// console.log(arr5)


//对象

// let obj:object =  { a: 1, b: 2}
// obj.a = 3
// console.log(obj)


// let obj:{a:number,b:number} =  { a: 1, b: 2}
// obj.a = 3
// console.log(obj)


// let obj: Object;
// obj  = { a: 1, b: 2}
// obj = null;
// obj = undefined;
// console.log(obj)


//函数
// function add(x:number, y:number) {
//   console.log(x, y)
// }
//
// add(1, 2)


// function add(x:string, y:number) {
//   console.log(x, y)
// }
//
// add('1', 2)


// function add(x:number, y:number): void {
//   console.log(x, y)
// }
//
// add(1, 2)


// function add(x: number, y: number): number {
//   console.log(x, y)
//   return x + y
// }
//
// add(1, 2)


// const add = (x:number,y:number):string=>{
//   return x+y+'1'
// }
// add(1,2)


//可选参数 ?
// function setInfo(name: string,age?:number) {
//   console.log(name,age)
// }
// setInfo('Domesy')
// setInfo('Domesy', 7)



//默认参数
// function setInfo(name: string, age: number = 18) {
//   console.log(name, age)
// }
// setInfo('Domesy')
// setInfo('Domesy',7)


//剩余参数
// function add(...nums:number[]){
//   let sum = 0
//   for (let i = 0; i < nums.length; i++) {
//     sum += nums[i]
//   }
//   console.log(sum)
// }
// add(1,2,3,4,5)


//函数的重载
// function add(x: number, y: number): number;
// function add(x: string, y: string): string;
// function add(x: boolean, y: boolean): boolean;
// function add(x: any, y: any) {
//   if (typeof x === 'string' && typeof y === 'string') {
//     return x + y
//   }
//   if (typeof x === 'number' && typeof y === 'number') {
//     return x + y
//   }
//   if (typeof x === 'boolean' && typeof y === 'boolean') {
//     return  x&&y
//   }
// }
// add(1, 2)
// add('1', '2')
// add(true, true)
</script>

<style scoped>
.logo {
  height: 6em;
  padding: 1.5em;
  will-change: filter;
  transition: filter 300ms;
}

.logo:hover {
  filter: drop-shadow(0 0 2em #646cffaa);
}

.logo.vue:hover {
  filter: drop-shadow(0 0 2em #42b883aa);
}
</style>
